/**  
 * @Title: CodeCache.java
 * @Package: com.itic.appbase.applications.cacheUtils
 * @author: idong
 * @date: 2015年6月4日 下午2:51:28
 * @version: V1.0  
 */

package com.itic.appbase.applications.cacheutils;

import java.util.List;

import com.itic.appbase.applications.sys.code.persistence.model.CodeDetail;
import com.itic.appbase.framework.common.constants.Constants;
import com.itic.appbase.framework.utils.CacheHelper;

/**
 * <p>
 * Company: itic
 * </p>
 * 代码表缓存.</br>
 * 基于type获取codeDetail</br>
 * 主键策略：CODE_CACHE_PREFIX + 大写code类型(T_SYS_SEX) 缓存值：List of CodeDetail</br>
 * 更新策略：CodeController进行edit,delete</br>
 * CodeDetailController进行add，edit，delete时remove</br>
 * 缓存调用：InnerCommonServiceImpl进行getCodeDetail时进行get,put</br>
 * 注意：CodeDetail 需要实现序列化</br>
 * 
 * @author: idong
 * @date: 2015年6月4日 下午2:51:28
 * @version: V1.0
 */
public class CodeCache {
    
    private CodeCache() {
        
    }

    /**
     * 清除缓存
     * 
     * @param codeType
     */
    public static void remove(String codeType) {
        CacheHelper.remove(keyFormatter(codeType));
    }

    /**
     * 获取缓存
     * 
     * @param codeType
     * @return
     */
    @SuppressWarnings("unchecked")
    public static List<CodeDetail> get(String codeType) {
        return (List<CodeDetail>) CacheHelper.get(keyFormatter(codeType));
    }

    /**
     * 放入缓存
     * 
     * @param codeType
     * @param codeList
     */
    public static void put(String codeType, List<CodeDetail> codeList) {
        CacheHelper.put(keyFormatter(codeType), codeList);
    }

    /**
     * 缓存key生成
     * 
     * @param codeType
     * @return
     */
    private static String keyFormatter(String codeType) {
        StringBuilder sb = new StringBuilder(Constants.CODE_CACHE_PREFIX);
        sb.append(codeType.toUpperCase().trim());
        return sb.toString();
    }
}
